5、日期问题
题目 日期问题
思路分析
日期问题 上来一套组合拳
枚举范围内的每个日期 检查是否存在合法方案
代码实现
#include<bits/stdc++.h>
using namespace std;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool is_leap(int y){
return y%100 && y%4==0 || y%400==0;
}
int getdays(int y,int m){
return days[m]+(m==2 && is_leap(y));
}
void nextday(int &y,int &m,int &d){
d++;
if(d>getdays(y,m)){
d=1;
m++;
if(m>12){
m=1;
y++;
}
}
}
int main()
{
int one,two,three;
scanf("%d/%d/%d",&one,&two,&three);
int cury=1960,curm=1,curd=1;
while (cury < 2060) {
if(cury%100==one && curm==two && curd==three //yymmdd
||
cury%100==three && curm==one && curd==two //mmddyy
||
cury%100==three && curm==two && curd==one //ddmmyy
){
printf("%d-%02d-%02d\n",cury,curm,curd);
}
nextday(cury,curm,curd);
}
return 0;
}
💬 评论